package com.elitesland.b2c.com.service;

import com.elitesland.b2c.com.dto.ComFileDTO;
import com.elitesland.b2c.com.vo.resp.ComFileUploadRespVO;
import com.elitesland.core.base.ApiResult;
import org.springframework.web.multipart.MultipartFile;

import java.io.OutputStream;
import java.util.List;
import java.util.Map;

/**
 * @author Kaiser（wang shao）
 * @since 2020/2/1
 */
public interface ComFileService {

    /**
     * 文件上传
     *
     * @param multipartFile 文件
     * @return 文件信息
     */
    ApiResult<ComFileUploadRespVO> upload(MultipartFile multipartFile);

    /**
     * 删除文件
     *
     * @param id 文件ID
     * @return 删除结果
     */
    ApiResult<Long> delete(Long id);

    /**
     * 删除文件
     *
     * @param ids 文件ID
     * @return 删除结果
     */
    ApiResult<List<Long>> delete(List<Long> ids);

    /**
     * 下载文件
     *
     * @param id           文件ID
     * @param outputStream 输出流
     * @return 下载结果
     */
    ApiResult<Long> download(Long id, OutputStream outputStream);

    /**
     * 显示图片
     *
     * @param outputStream 输出流
     * @param id           文件ID
     * @param thumbnail    是否是缩略图
     * @return 下载路径
     */
    ApiResult<String> show(OutputStream outputStream, Long id, Boolean thumbnail);

    /**
     * 查询文件信息
     *
     * @param id 文件ID
     * @return 文件信息
     */
    ApiResult<ComFileDTO> query(Long id);

    /**
     * 查询文件信息
     *
     * @param ids 文件ID
     * @return 文件ID与文件信息的映射
     */
    ApiResult<Map<Long, ComFileDTO>> query(List<Long> ids);
}
